package br.edu.eseg.brproject.model;

// Generated May 29, 2011 12:04:47 PM by Hibernate Tools 3.4.0.CR1

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Type;
import org.hibernate.validator.NotNull;

/**
 * Projeto generated by hbm2java
 */
@Entity
@Table(name = "projeto")
public class Projeto implements java.io.Serializable {

	private Long id;
	private Statusprojeto statusprojeto;
	private Usuario usuario;
	private String cliente;
	private Double custoprevisto;
	private Date datacriacao;
	private Date fim;
	private Date fimprevisto;
	private Date inicio;
	private String justificativa;
	private String necessidades;
	private String nome;
	private Double orcamento;
	private String premissas;
	private String produto;
	private String responsabilidadesgp;
	private String restricoes;
	private String resumo;
	private Set<Stakeholder> stakeholders = new HashSet<Stakeholder>(0);
	private Set<Solicitacaomudanca> solicitacaomudancas = new HashSet<Solicitacaomudanca>(
			0);
	private Set<Tarefa> tarefas = new HashSet<Tarefa>(0);
	private Set<Licao> licoes = new HashSet<Licao>(0);
	private Set<Notastakeholder> notastakeholders = new HashSet<Notastakeholder>(
			0);

	public Projeto() {
		datacriacao = new Date();
	}

	public Projeto(Statusprojeto statusprojeto, Usuario usuario,
			Date datacriacao, Date inicio) {
		this.statusprojeto = statusprojeto;
		this.usuario = usuario;
		this.datacriacao = datacriacao;
		this.inicio = inicio;
	}

	public Projeto(Long id, Statusprojeto statusprojeto, Usuario usuario,
			String cliente, Double custoprevisto, Date datacriacao, Date fim,
			Date fimprevisto, Date inicio, String justificativa,
			String necessidades, String nome, Double orcamento,
			String premissas, String produto, String responsabilidadesgp,
			String restricoes, String resumo, Set<Stakeholder> stakeholders,
			Set<Solicitacaomudanca> solicitacaomudancas, Set<Tarefa> tarefas,
			Set<Licao> licoes, Set<Notastakeholder> notastakeholders) {
		super();
		this.id = id;
		this.statusprojeto = statusprojeto;
		this.usuario = usuario;
		this.cliente = cliente;
		this.custoprevisto = custoprevisto;
		this.datacriacao = datacriacao;
		this.fim = fim;
		this.fimprevisto = fimprevisto;
		this.inicio = inicio;
		this.justificativa = justificativa;
		this.necessidades = necessidades;
		this.nome = nome;
		this.orcamento = orcamento;
		this.premissas = premissas;
		this.produto = produto;
		this.responsabilidadesgp = responsabilidadesgp;
		this.restricoes = restricoes;
		this.resumo = resumo;
		this.stakeholders = stakeholders;
		this.solicitacaomudancas = solicitacaomudancas;
		this.tarefas = tarefas;
		this.licoes = licoes;
		this.notastakeholders = notastakeholders;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id")
	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "statusprojetoid", nullable = false)
	@NotNull
	public Statusprojeto getStatusprojeto() {
		return this.statusprojeto;
	}

	public void setStatusprojeto(Statusprojeto statusprojeto) {
		this.statusprojeto = statusprojeto;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "gerenteprojetoid", nullable = false)
	@NotNull
	public Usuario getUsuario() {
		return this.usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	@Column(name = "cliente")
	public String getCliente() {
		return this.cliente;
	}

	public void setCliente(String cliente) {
		this.cliente = cliente;
	}

	@Column(name = "custoprevisto", precision = 22, scale = 0)
	public Double getCustoprevisto() {
		return this.custoprevisto;
	}

	public void setCustoprevisto(Double custoprevisto) {
		this.custoprevisto = custoprevisto;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "datacriacao", nullable = false, length = 19, columnDefinition = "timestamp default CURRENT_TIMESTAMP")
	@NotNull
	public Date getDatacriacao() {
		return this.datacriacao;
	}

	public void setDatacriacao(Date datacriacao) {
		this.datacriacao = datacriacao;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fim", length = 19)
	public Date getFim() {
		return this.fim;
	}

	public void setFim(Date fim) {
		this.fim = fim;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fimprevisto", length = 19)
	public Date getFimprevisto() {
		return this.fimprevisto;
	}

	public void setFimprevisto(Date fimprevisto) {
		this.fimprevisto = fimprevisto;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "inicio", nullable = false, length = 19)
	@NotNull
	public Date getInicio() {
		return this.inicio;
	}

	public void setInicio(Date inicio) {
		this.inicio = inicio;
	}

	@Column(name = "justificativa")
	@Type(type = "text")
	public String getJustificativa() {
		return this.justificativa;
	}

	public void setJustificativa(String justificativa) {
		this.justificativa = justificativa;
	}

	@Column(name = "necessidades")
	@Type(type = "text")
	public String getNecessidades() {
		return this.necessidades;
	}

	public void setNecessidades(String necessidades) {
		this.necessidades = necessidades;
	}

	@Column(name = "nome")
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Column(name = "orcamento", precision = 22, scale = 0)
	public Double getOrcamento() {
		return this.orcamento;
	}

	public void setOrcamento(Double orcamento) {
		this.orcamento = orcamento;
	}

	@Column(name = "premissas")
	@Type(type = "text")
	public String getPremissas() {
		return this.premissas;
	}

	public void setPremissas(String premissas) {
		this.premissas = premissas;
	}

	@Column(name = "produto")
	@Type(type = "text")
	public String getProduto() {
		return this.produto;
	}

	public void setProduto(String produto) {
		this.produto = produto;
	}

	@Column(name = "responsabilidadesgp")
	@Type(type = "text")
	public String getResponsabilidadesgp() {
		return this.responsabilidadesgp;
	}

	public void setResponsabilidadesgp(String responsabilidadesgp) {
		this.responsabilidadesgp = responsabilidadesgp;
	}

	@Column(name = "restricoes")
	@Type(type = "text")
	public String getRestricoes() {
		return this.restricoes;
	}

	public void setRestricoes(String restricoes) {
		this.restricoes = restricoes;
	}

	@Column(name = "resumo")
	@Type(type = "text")
	public String getResumo() {
		return this.resumo;
	}

	public void setResumo(String resumo) {
		this.resumo = resumo;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "projeto")
	public Set<Stakeholder> getStakeholders() {
		return this.stakeholders;
	}

	public void setStakeholders(Set<Stakeholder> stakeholders) {
		this.stakeholders = stakeholders;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "projeto")
	public Set<Solicitacaomudanca> getSolicitacaomudancas() {
		return this.solicitacaomudancas;
	}

	public void setSolicitacaomudancas(
			Set<Solicitacaomudanca> solicitacaomudancas) {
		this.solicitacaomudancas = solicitacaomudancas;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "projeto")
	public Set<Tarefa> getTarefas() {
		return this.tarefas;
	}

	public void setTarefas(Set<Tarefa> tarefas) {
		this.tarefas = tarefas;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "projeto")
	public Set<Licao> getLicoes() {
		return this.licoes;
	}

	public void setLicoes(Set<Licao> licoes) {
		this.licoes = licoes;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "projeto")
	public Set<Notastakeholder> getNotastakeholders() {
		return notastakeholders;
	}

	public void setNotastakeholders(Set<Notastakeholder> notastakeholders) {
		this.notastakeholders = notastakeholders;
	}

}
